﻿using Com.Alipay;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Light.AliPay
{
    /// <summary>
    /// 功能：即时到账交易接口接入页
    /// 版本：3.4
    /// 修改日期：2016-10-13
    /// 说明：
    /// 以下代码只是为了方便商户测试而提供的样例代码，商户可以根据自己网站的需要，按照技术文档编写,并非一定要使用该代码。
    /// 该代码仅供学习和研究支付宝接口使用，只是提供一个参考。
    /// 
    /// /////////////////注意///////////////////////////////////////////////////////////////
    /// 如果您在接口集成过程中遇到问题，可以按照下面的途径来解决
    /// 1、开发文档中心（https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.KvddfJ&treeId=62&articleId=103740&docType=1）
    /// 2、商户帮助中心（https://cshall.alipay.com/enterprise/help_detail.htm?help_id=473888）
    /// 3、支持中心（https://support.open.alipay.com/alipay/support/index.htm）
    /// 如果不想使用扩展功能请把扩展功能参数赋空值。
    /// </summary>
    public class AliPay
    {
        /// <summary>
        /// 建立支付
        /// </summary>
        /// <param name="out_trade_no"> 商户号 必填</param>
        /// <param name="subject">标题 必填</param>
        /// <param name="total_fee">金额 必填</param>
        /// <param name="body">商品内容 可空</param>
        /// <param name="show_url">商品连接 可空</param>
        /// <returns>建立请求</returns>
        public string Pay(string out_trade_no, string subject, string total_fee, string body, string show_url)
        {
            SortedDictionary<string, string> sParaTemp = new SortedDictionary<string, string>();

            //商户号，商户网站订单系统中唯一号，必填
            sParaTemp.Add("out_trade_no", out_trade_no);
            //名称，必填
            sParaTemp.Add("subject", subject);
            //付款金额，必填
            sParaTemp.Add("total_fee", total_fee);
            //商品描述，可空
            sParaTemp.Add("body", body);
            sParaTemp.Add("show_url", show_url);

            sParaTemp.Add("return_url", Config.return_url);
            sParaTemp.Add("notify_url", Config.notify_url);

            sParaTemp.Add("partner", Config.partner);
            sParaTemp.Add("seller_id", Config.seller_id);
            sParaTemp.Add("_input_charset", Config.input_charset.ToLower());
            sParaTemp.Add("service", Config.service);
            sParaTemp.Add("payment_type", Config.payment_type);
            sParaTemp.Add("anti_phishing_key", Submit.Query_timestamp());
            sParaTemp.Add("exter_invoke_ip", Config.exter_invoke_ip);

            //建立请求
            return Submit.BuildRequest(sParaTemp, "post", "确认");
        }

    }
}
